package com.huaxin.hxmoduleworkorder.common.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import com.huaxin.hxmoduleworkorder.common.enums.base.BaseCodeEnum;

public enum MaintenanceOrderOperation implements BaseCodeEnum {
    // 工单创建人可操作
    CREATE("create", "创建"),
    EDIT("edit", "编辑"),
    SUBMIT("submit", "提交"),
    CANCEL("cancel", "取消"),     // 管理员可操作
    EVALUATE("evaluate", "评价"),

    // 管理员可操作
    REVIEW("review", "审核"),      // 审核时已执行分配
    //    ASSIGN("assign", "分配"),
    REJECT("reject", "驳回"),      // 主修电工可操作
    REASSIGN("reassign", "重新分配"),      // 主修电工可操作
    COMPLETE("complete", "完成"),
    ROLLBACK("rollback", "回退"),
    DELETE("delete", "删除"),

    // 电工可操作（部分通过任务操作，但某些需从工单入口）
    VIEW("view", "查看"),

    // 系统操作
    SYSTEM_SYNC_STATUS("system_sync_status", "同步工单状态");

    @EnumValue
    private final String code;
    private final String displayName;

    MaintenanceOrderOperation(String code, String displayName) {
        this.code = code;
        this.displayName = displayName;
    }

    @JsonValue
    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDisplayName() {
        return displayName;
    }

    // 根据 code 查找枚举
    public static MaintenanceOrderOperation of(String code) {
        for (MaintenanceOrderOperation op : values()) {
            if (op.code.equalsIgnoreCase(code)) {
                return op;
            }
        }
        return null;
    }

    public static boolean isValid(String code) {
        return of(code) != null;
    }
}